package ar.com.psicosoft.model.psicosoft;

import java.io.Serializable;

import javax.persistence.*;

import java.sql.Timestamp;
import java.util.List;

/**
 * The persistent class for the tratamiento database table.
 * 
 */
@Entity
@Table(name = "tratamiento", schema = "psicosoft")
@NamedQuery(name = "Tratamiento.findAll", query = "SELECT t FROM Tratamiento t")
public class Tratamiento implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name = "sec_tratamiento", sequenceName = "psicosoft.sec_tratamiento")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sec_tratamiento")
	@Column(name = "\"idTratamiento\"", unique = true, nullable = false)
	private Integer idTratamiento;

	private Timestamp baja;

	@Column(name = "\"fechaAlta\"", nullable = false)
	private Timestamp fechaAlta;

	@Column(name = "\"fechaBaja\"")
	private Timestamp fechaBaja;

	@Column(name = "\"idHistoriaClinica\"", nullable = false)
	private Integer idHistoriaClinica;

	@Column(name = "\"idTipoTratamiento\"")
	private Integer idTipoTratamiento;

	@Column(name = "\"objTratamiento\"", nullable = false, length = 40)
	private String objTratamiento;

	@Column(length = 2147483647)
	private String observaciones;

	@Column(name = "\"resumenEnfermedad\"", length = 2147483647)
	private String resumenEnfermedad;

	// bi-directional many-to-one association to Informe
	@OneToMany(mappedBy = "tratamiento")
	private List<Informe> informes;

	// bi-directional many-to-one association to Sesion
	@OneToMany(mappedBy = "tratamiento")
	private List<Sesion> sesions;

	// bi-directional many-to-many association to Diagnostico
	// @ManyToMany
	// @JoinTable(name = "\"tratamientoDiagnostico\"", joinColumns = {

	// }, inverseJoinColumns = {

	// })
	// private List<Diagnostico> diagnosticos;

	// bi-directional many-to-one association to HistoriaClinica
	@ManyToOne
	@JoinColumn(name = "\"idHistoriaClinica\"", nullable = false, insertable = false, updatable = false)
	private HistoriaClinica historiaClinica;

	// bi-directional many-to-one association to TipoTratamiento
	@ManyToOne
	@JoinColumn(name = "\"idTipoTratamiento\"", nullable = false, insertable = false, updatable = false)
	private TipoTratamiento tipoTratamiento;

	public Tratamiento() {
	}

	public Integer getIdTratamiento() {
		return this.idTratamiento;
	}

	public void setIdTratamiento(Integer idTratamiento) {
		this.idTratamiento = idTratamiento;
	}

	public Timestamp getBaja() {
		return this.baja;
	}

	public void setBaja(Timestamp baja) {
		this.baja = baja;
	}

	public Timestamp getFechaAlta() {
		return this.fechaAlta;
	}

	public void setFechaAlta(Timestamp fechaAlta) {
		this.fechaAlta = fechaAlta;
	}

	public Timestamp getFechaBaja() {
		return this.fechaBaja;
	}

	public void setFechaBaja(Timestamp fechaBaja) {
		this.fechaBaja = fechaBaja;
	}

	public Integer getIdHistoriaClinica() {
		return this.idHistoriaClinica;
	}

	public void setIdHistoriaClinica(Integer idHistoriaClinica) {
		this.idHistoriaClinica = idHistoriaClinica;
	}

	public Integer getIdTipoTratamiento() {
		return this.idTipoTratamiento;
	}

	public void setIdTipoTratamiento(Integer idTipoTratamiento) {
		this.idTipoTratamiento = idTipoTratamiento;
	}

	public String getObjTratamiento() {
		return this.objTratamiento;
	}

	public void setObjTratamiento(String objTratamiento) {
		this.objTratamiento = objTratamiento;
	}

	public String getObservaciones() {
		return this.observaciones;
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	public String getResumenEnfermedad() {
		return this.resumenEnfermedad;
	}

	public void setResumenEnfermedad(String resumenEnfermedad) {
		this.resumenEnfermedad = resumenEnfermedad;
	}

	public List<Informe> getInformes() {
		return this.informes;
	}

	public void setInformes(List<Informe> informes) {
		this.informes = informes;
	}

	public Informe addInforme(Informe informe) {
		getInformes().add(informe);
		informe.setTratamiento(this);

		return informe;
	}

	public Informe removeInforme(Informe informe) {
		getInformes().remove(informe);
		informe.setTratamiento(null);

		return informe;
	}

	public List<Sesion> getSesions() {
		return this.sesions;
	}

	public void setSesions(List<Sesion> sesions) {
		this.sesions = sesions;
	}

	public Sesion addSesion(Sesion sesion) {
		getSesions().add(sesion);
		sesion.setTratamiento(this);

		return sesion;
	}

	public Sesion removeSesion(Sesion sesion) {
		getSesions().remove(sesion);
		sesion.setTratamiento(null);

		return sesion;
	}

	/*
	 * public List<Diagnostico> getDiagnosticos() { return this.diagnosticos; }
	 * 
	 * public void setDiagnosticos(List<Diagnostico> diagnosticos) {
	 * this.diagnosticos = diagnosticos; }
	 */

	public HistoriaClinica getHistoriaClinica() {
		return this.historiaClinica;
	}

	public void setHistoriaClinica(HistoriaClinica historiaClinica) {
		this.historiaClinica = historiaClinica;
	}

	public TipoTratamiento getTipoTratamiento() {
		return this.tipoTratamiento;
	}

	public void setTipoTratamiento(TipoTratamiento tipoTratamiento) {
		this.tipoTratamiento = tipoTratamiento;
	}

}